<?php
abstract class XObject {
    private $propertieChange = false;
    final public function __set($propertie, $value) {
        $this->propertieChange = true;
        $this->__xset__($propertie,$value);
    }
    public function __xset__($propertie, $value) {
        $this->$propertie = $value;
    }
    /**
     * check class propertie whether change default value or set new propertie and it value;
     */
    final public function isChange() {
        if($this->propertieChange) return true;
        $ref = new ReflectionObject($this);
        $list = $ref->getDefaultProperties();
        foreach($list as $key=>$value) {
            if($this->$key != $value) return true;
        }
        return false;
    }
}
